// CyTargetLinker,
// a Cytoscape plugin to extend biological networks with regulatory interaction
//
// Copyright 2011-2013 Department of Bioinformatics - BiGCaT, Maastricht University
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//       http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package cytargetlinker.data;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cytoscape.CyNetwork;
import cytoscape.CyNode;
import cytoscape.Cytoscape;
import cytoscape.data.CyAttributes;

/**
 * network that was opened and selected by the user
 * @author martina
 *
 */
public class UserNetwork {
	
	private CyNetwork network;
	private String name;
	private Map<String, CyNode> nodes;
	private String idAttribute;
	
	public UserNetwork() {
		nodes = new HashMap<String, CyNode>();
	}

	public void processNodeIds() {
		if(network != null && idAttribute != null) {
			CyAttributes cyNodeAttrs = Cytoscape.getNodeAttributes();
			
			@SuppressWarnings("unchecked")
			List<CyNode> list = network.nodesList();
			
			for (CyNode node : list) {
				String id = cyNodeAttrs.getStringAttribute(node.getIdentifier(), idAttribute);
				if(id != null && !id.equals("")) {
					nodes.put(id, node);
				}
			}
			
		}
	}
	
	// SETTERS & GETTERS 
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Map<String, CyNode> getNodes() {
		return nodes;
	}

	public void setNodes(Map<String, CyNode> nodes) {
		this.nodes = nodes;
	}

	public String getIdAttribute() {
		return idAttribute;
	}

	public void setIdAttribute(String idAttribute) {
		this.idAttribute = idAttribute;
	}
	
	public CyNetwork getNetwork() {
		return network;
	}

	public void setNetwork(CyNetwork network) {
		this.network = network;
	}
}